{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 第五节：特征工程进阶与方案优化"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 5.3 特征工程进阶实践"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 5.3.1 特征工程基础部分"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "import seaborn as sns\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "import lightgbm as lgb\n",
    "from sklearn.model_selection import train_test_split\n",
    "from sklearn.preprocessing import OneHotEncoder\n",
    "\n",
    "from tqdm import tqdm_notebook\n",
    "\n",
    "import warnings\n",
    "warnings.filterwarnings('ignore')\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 内存管理\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "from tqdm import tqdm  \n",
    "\n",
    "class _Data_Preprocess:\n",
    "    def __init__(self):\n",
    "        self.int8_max = np.iinfo(np.int8).max\n",
    "        self.int8_min = np.iinfo(np.int8).min\n",
    "\n",
    "        self.int16_max = np.iinfo(np.int16).max\n",
    "        self.int16_min = np.iinfo(np.int16).min\n",
    "\n",
    "        self.int32_max = np.iinfo(np.int32).max\n",
    "        self.int32_min = np.iinfo(np.int32).min\n",
    "\n",
    "        self.int64_max = np.iinfo(np.int64).max\n",
    "        self.int64_min = np.iinfo(np.int64).min\n",
    "\n",
    "        self.float16_max = np.finfo(np.float16).max\n",
    "        self.float16_min = np.finfo(np.float16).min\n",
    "\n",
    "        self.float32_max = np.finfo(np.float32).max\n",
    "        self.float32_min = np.finfo(np.float32).min\n",
    "\n",
    "        self.float64_max = np.finfo(np.float64).max\n",
    "        self.float64_min = np.finfo(np.float64).min\n",
    "\n",
    "    def _get_type(self, min_val, max_val, types):\n",
    "        if types == 'int':\n",
    "            if max_val <= self.int8_max and min_val >= self.int8_min:\n",
    "                return np.int8\n",
    "            elif max_val <= self.int16_max <= max_val and min_val >= self.int16_min:\n",
    "                return np.int16\n",
    "            elif max_val <= self.int32_max and min_val >= self.int32_min:\n",
    "                return np.int32\n",
    "            return None\n",
    "\n",
    "        elif types == 'float':\n",
    "            if max_val <= self.float16_max and min_val >= self.float16_min:\n",
    "                return np.float16\n",
    "            if max_val <= self.float32_max and min_val >= self.float32_min:\n",
    "                return np.float32\n",
    "            if max_val <= self.float64_max and min_val >= self.float64_min:\n",
    "                return np.float64\n",
    "            return None\n",
    "\n",
    "    def _memory_process(self, df):\n",
    "        init_memory = df.memory_usage().sum() / 1024 ** 2 / 1024\n",
    "        print('Original data occupies {} GB memory.'.format(init_memory))\n",
    "        df_cols = df.columns\n",
    "\n",
    "          \n",
    "        for col in tqdm_notebook(df_cols):\n",
    "            try:\n",
    "                if 'float' in str(df[col].dtypes):\n",
    "                    max_val = df[col].max()\n",
    "                    min_val = df[col].min()\n",
    "                    trans_types = self._get_type(min_val, max_val, 'float')\n",
    "                    if trans_types is not None:\n",
    "                        df[col] = df[col].astype(trans_types)\n",
    "                elif 'int' in str(df[col].dtypes):\n",
    "                    max_val = df[col].max()\n",
    "                    min_val = df[col].min()\n",
    "                    trans_types = self._get_type(min_val, max_val, 'int')\n",
    "                    if trans_types is not None:\n",
    "                        df[col] = df[col].astype(trans_types)\n",
    "            except:\n",
    "                print(' Can not do any process for column, {}.'.format(col)) \n",
    "        afterprocess_memory = df.memory_usage().sum() / 1024 ** 2 / 1024\n",
    "        print('After processing, the data occupies {} GB memory.'.format(afterprocess_memory))\n",
    "        return df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "memory_process = _Data_Preprocess()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "### 数据读取\n",
    "path  = '../security_data/'\n",
    "train = pd.read_csv(path + 'security_train.csv')\n",
    "test  = pd.read_csv(path + 'security_test.csv')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>file_id</th>\n",
       "      <th>label</th>\n",
       "      <th>api</th>\n",
       "      <th>tid</th>\n",
       "      <th>index</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>5</td>\n",
       "      <td>LdrLoadDll</td>\n",
       "      <td>2488</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>5</td>\n",
       "      <td>LdrGetProcedureAddress</td>\n",
       "      <td>2488</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>5</td>\n",
       "      <td>LdrGetProcedureAddress</td>\n",
       "      <td>2488</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>5</td>\n",
       "      <td>LdrGetProcedureAddress</td>\n",
       "      <td>2488</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>5</td>\n",
       "      <td>LdrGetProcedureAddress</td>\n",
       "      <td>2488</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   file_id  label                     api   tid  index\n",
       "0        1      5              LdrLoadDll  2488      0\n",
       "1        1      5  LdrGetProcedureAddress  2488      1\n",
       "2        1      5  LdrGetProcedureAddress  2488      2\n",
       "3        1      5  LdrGetProcedureAddress  2488      3\n",
       "4        1      5  LdrGetProcedureAddress  2488      4"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "def simple_sts_features(df):\n",
    "    simple_fea             = pd.DataFrame()\n",
    "    simple_fea['file_id']  = df['file_id'].unique()\n",
    "    simple_fea             = simple_fea.sort_values('file_id')\n",
    "     \n",
    "    df_grp = df.groupby('file_id')\n",
    "    simple_fea['file_id_api_count']   = df_grp['api'].count().values\n",
    "    simple_fea['file_id_api_nunique'] = df_grp['api'].nunique().values\n",
    "    \n",
    "    simple_fea['file_id_tid_count']   = df_grp['tid'].count().values\n",
    "    simple_fea['file_id_tid_nunique'] = df_grp['tid'].nunique().values\n",
    "    \n",
    "    simple_fea['file_id_index_count']   = df_grp['index'].count().values\n",
    "    simple_fea['file_id_index_nunique'] = df_grp['index'].nunique().values\n",
    "    \n",
    "    return simple_fea"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Wall time: 805 ms\n"
     ]
    }
   ],
   "source": [
    "%%time\n",
    "simple_train_fea1 = simple_sts_features(train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Wall time: 18 ms\n"
     ]
    }
   ],
   "source": [
    "%%time\n",
    "simple_test_fea1 = simple_sts_features(test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "def simple_numerical_sts_features(df):\n",
    "    simple_numerical_fea             = pd.DataFrame()\n",
    "    simple_numerical_fea['file_id']  = df['file_id'].unique()\n",
    "    simple_numerical_fea             = simple_numerical_fea.sort_values('file_id')\n",
    "     \n",
    "    df_grp = df.groupby('file_id')\n",
    "    \n",
    "    simple_numerical_fea['file_id_tid_mean']  = df_grp['tid'].mean().values\n",
    "    simple_numerical_fea['file_id_tid_min']   = df_grp['tid'].min().values\n",
    "    simple_numerical_fea['file_id_tid_std']   = df_grp['tid'].std().values\n",
    "    simple_numerical_fea['file_id_tid_max']   = df_grp['tid'].max().values\n",
    "    \n",
    "    \n",
    "    simple_numerical_fea['file_id_index_mean']= df_grp['index'].mean().values\n",
    "    simple_numerical_fea['file_id_index_min'] = df_grp['index'].min().values\n",
    "    simple_numerical_fea['file_id_index_std'] = df_grp['index'].std().values\n",
    "    simple_numerical_fea['file_id_index_max'] = df_grp['index'].max().values\n",
    "    \n",
    "    return simple_numerical_fea"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Wall time: 88 ms\n"
     ]
    }
   ],
   "source": [
    "%%time\n",
    "simple_train_fea2 = simple_numerical_sts_features(train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Wall time: 19 ms\n"
     ]
    }
   ],
   "source": [
    "%%time\n",
    "simple_test_fea2 = simple_numerical_sts_features(test)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 5.3.2 特征工程进阶部分"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "def api_pivot_count_features(df):\n",
    "    tmp = df.groupby(['file_id','api'])['tid'].count().to_frame('api_tid_count').reset_index()\n",
    "    tmp_pivot = pd.pivot_table(data=tmp,index = 'file_id',columns='api',values='api_tid_count',fill_value=0)\n",
    "    tmp_pivot.columns = [tmp_pivot.columns.names[0] + '_pivot_'+ str(col) for col in tmp_pivot.columns]\n",
    "    tmp_pivot.reset_index(inplace = True)\n",
    "    tmp_pivot = memory_process._memory_process(tmp_pivot)\n",
    "    return tmp_pivot "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Original data occupies 0.0001841336488723755 GB memory.\n"
     ]
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "fe941675a58c46d58d7b8307aaa89d4f",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "HBox(children=(IntProgress(value=0, max=233), HTML(value='')))"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "After processing, the data occupies 4.740618169307709e-05 GB memory.\n",
      "Wall time: 545 ms\n"
     ]
    }
   ],
   "source": [
    "%%time\n",
    "simple_train_fea3 = api_pivot_count_features(train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Original data occupies 5.334615707397461e-06 GB memory.\n"
     ]
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "13b3a99ef52946ac9744be2998310037",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "HBox(children=(IntProgress(value=0), HTML(value='')))"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "After processing, the data occupies 9.080395102500916e-07 GB memory.\n",
      "Wall time: 224 ms\n"
     ]
    }
   ],
   "source": [
    "%%time\n",
    "simple_test_fea3 = api_pivot_count_features(test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [],
   "source": [
    "def api_pivot_nunique_features(df):\n",
    "    tmp = df.groupby(['file_id','api'])['tid'].nunique().to_frame('api_tid_nunique').reset_index()\n",
    "    tmp_pivot = pd.pivot_table(data=tmp,index = 'file_id',columns='api',values='api_tid_nunique',fill_value=0)\n",
    "    tmp_pivot.columns = [tmp_pivot.columns.names[0] + '_pivot_'+ str(col) for col in tmp_pivot.columns]\n",
    "    tmp_pivot.reset_index(inplace = True)\n",
    "    tmp_pivot = memory_process._memory_process(tmp_pivot)\n",
    "    return tmp_pivot "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Original data occupies 0.0001841336488723755 GB memory.\n"
     ]
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "a3f6fbd140f9490ca74e2290610be201",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "HBox(children=(IntProgress(value=0, max=233), HTML(value='')))"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "After processing, the data occupies 4.740618169307709e-05 GB memory.\n",
      "Wall time: 537 ms\n"
     ]
    }
   ],
   "source": [
    "%%time\n",
    "simple_train_fea4 = api_pivot_count_features(train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Original data occupies 5.334615707397461e-06 GB memory.\n"
     ]
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "8a08fcbc500041a1aad8c96084023935",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "HBox(children=(IntProgress(value=0), HTML(value='')))"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "After processing, the data occupies 9.080395102500916e-07 GB memory.\n",
      "Wall time: 246 ms\n"
     ]
    }
   ],
   "source": [
    "%%time\n",
    "simple_test_fea4 = api_pivot_count_features(test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [],
   "source": [
    "train_label = train[['file_id','label']].drop_duplicates(subset = ['file_id','label'], keep = 'first')\n",
    "test_submit = test[['file_id']].drop_duplicates(subset = ['file_id'], keep = 'first')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [],
   "source": [
    "train_data = train_label.merge(simple_train_fea1, on ='file_id', how='left')\n",
    "train_data = train_data.merge(simple_train_fea2, on ='file_id', how='left')\n",
    "train_data = train_data.merge(simple_train_fea3, on ='file_id', how='left')\n",
    "train_data = train_data.merge(simple_train_fea4, on ='file_id', how='left')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [],
   "source": [
    "test_submit = test_submit.merge(simple_test_fea1, on ='file_id', how='left')\n",
    "test_submit = test_submit.merge(simple_test_fea2, on ='file_id', how='left')\n",
    "test_submit = test_submit.merge(simple_test_fea3, on ='file_id', how='left')\n",
    "test_submit = test_submit.merge(simple_test_fea4, on ='file_id', how='left')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [],
   "source": [
    "### 评估指标构建\n",
    "def lgb_logloss(preds,data):\n",
    "    labels_ = data.get_label()             \n",
    "    classes_ = np.unique(labels_) \n",
    "    preds_prob = []\n",
    "    for i in range(len(classes_)):\n",
    "        preds_prob.append(preds[i*len(labels_):(i+1) * len(labels_)] )\n",
    "        \n",
    "    preds_prob_ = np.vstack(preds_prob) \n",
    "    \n",
    "    loss = []\n",
    "    for i in range(preds_prob_.shape[1]):     \n",
    "        sum_ = 0\n",
    "        for j in range(preds_prob_.shape[0]): \n",
    "            pred = preds_prob_[j,i]           \n",
    "            if  j == labels_[i]:\n",
    "                sum_ += np.log(pred)\n",
    "            else:\n",
    "                sum_ += np.log(1 - pred)\n",
    "        loss.append(sum_)       \n",
    "    return 'loss is: ',-1 * (np.sum(loss) / preds_prob_.shape[1]),False"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 5.3.3 基于LightGBM 的模型验证"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [],
   "source": [
    "train_features = [col for col in train_data.columns if col not in ['label','file_id']]\n",
    "train_label    = 'label'"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "fold n°0\n",
      "Training until validation scores don't improve for 100 rounds\n",
      "[50]\ttraining's multi_logloss: 1.80505\ttraining's loss is: : 2.46982\tvalid_1's multi_logloss: 2.05998\tvalid_1's loss is: : 1.62421\n",
      "[100]\ttraining's multi_logloss: 1.80505\ttraining's loss is: : 2.46982\tvalid_1's multi_logloss: 2.05998\tvalid_1's loss is: : 1.62421\n",
      "Early stopping, best iteration is:\n",
      "[1]\ttraining's multi_logloss: 1.80505\ttraining's loss is: : 2.46982\tvalid_1's multi_logloss: 2.05998\tvalid_1's loss is: : 1.62421\n",
      "fold n°1\n",
      "Training until validation scores don't improve for 100 rounds\n",
      "[50]\ttraining's multi_logloss: 1.81909\ttraining's loss is: : 2.37634\tvalid_1's multi_logloss: 1.77992\tvalid_1's loss is: : 1.54376\n",
      "[100]\ttraining's multi_logloss: 1.81909\ttraining's loss is: : 2.37634\tvalid_1's multi_logloss: 1.77992\tvalid_1's loss is: : 1.54376\n",
      "Early stopping, best iteration is:\n",
      "[1]\ttraining's multi_logloss: 1.81909\ttraining's loss is: : 2.37634\tvalid_1's multi_logloss: 1.77992\tvalid_1's loss is: : 1.54376\n",
      "fold n°2\n",
      "Training until validation scores don't improve for 100 rounds\n",
      "[50]\ttraining's multi_logloss: 1.84735\ttraining's loss is: : 2.4576\tvalid_1's multi_logloss: 1.79953\tvalid_1's loss is: : 2.17848\n",
      "[100]\ttraining's multi_logloss: 1.84735\ttraining's loss is: : 2.4576\tvalid_1's multi_logloss: 1.79953\tvalid_1's loss is: : 2.17848\n",
      "Early stopping, best iteration is:\n",
      "[1]\ttraining's multi_logloss: 1.84735\ttraining's loss is: : 2.4576\tvalid_1's multi_logloss: 1.79953\tvalid_1's loss is: : 2.17848\n",
      "fold n°3\n",
      "Training until validation scores don't improve for 100 rounds\n",
      "[50]\ttraining's multi_logloss: 1.76809\ttraining's loss is: : 2.34503\tvalid_1's multi_logloss: 2.49498\tvalid_1's loss is: : 3.13933\n",
      "[100]\ttraining's multi_logloss: 1.76809\ttraining's loss is: : 2.34503\tvalid_1's multi_logloss: 2.49498\tvalid_1's loss is: : 3.13933\n",
      "Early stopping, best iteration is:\n",
      "[1]\ttraining's multi_logloss: 1.76809\ttraining's loss is: : 2.34503\tvalid_1's multi_logloss: 2.49498\tvalid_1's loss is: : 3.13933\n",
      "fold n°4\n",
      "Training until validation scores don't improve for 100 rounds\n",
      "[50]\ttraining's multi_logloss: 1.82105\ttraining's loss is: : 2.40387\tvalid_1's multi_logloss: 1.75563\tvalid_1's loss is: : 2.42316\n",
      "[100]\ttraining's multi_logloss: 1.82105\ttraining's loss is: : 2.40387\tvalid_1's multi_logloss: 1.75563\tvalid_1's loss is: : 2.42316\n",
      "Early stopping, best iteration is:\n",
      "[1]\ttraining's multi_logloss: 1.82105\ttraining's loss is: : 2.40387\tvalid_1's multi_logloss: 1.75563\tvalid_1's loss is: : 2.42316\n",
      "Wall time: 6.81 s\n"
     ]
    }
   ],
   "source": [
    "%%time\n",
    "from sklearn.model_selection import StratifiedKFold,KFold\n",
    "params = {\n",
    "        'task':'train', \n",
    "        'num_leaves': 255,\n",
    "        'objective': 'multiclass',\n",
    "        'num_class': 8,\n",
    "        'min_data_in_leaf': 50,\n",
    "        'learning_rate': 0.05,\n",
    "        'feature_fraction': 0.85,\n",
    "        'bagging_fraction': 0.85,\n",
    "        'bagging_freq': 5, \n",
    "        'max_bin':128,\n",
    "        'random_state':100\n",
    "    }   \n",
    "\n",
    "folds = KFold(n_splits=5, shuffle=True, random_state=15)\n",
    "oof = np.zeros(len(train))\n",
    "\n",
    "predict_res = 0\n",
    "models = []\n",
    "for fold_, (trn_idx, val_idx) in enumerate(folds.split(train_data)):\n",
    "    print(\"fold n°{}\".format(fold_))\n",
    "    trn_data = lgb.Dataset(train_data.iloc[trn_idx][train_features], label=train_data.iloc[trn_idx][train_label].values)\n",
    "    val_data = lgb.Dataset(train_data.iloc[val_idx][train_features], label=train_data.iloc[val_idx][train_label].values) \n",
    "    \n",
    "    clf = lgb.train(params, trn_data, num_boost_round=2000,valid_sets=[trn_data,val_data], verbose_eval=50, early_stopping_rounds=100, feval=lgb_logloss) \n",
    "    models.append(clf)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x1342e56fb48>"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x576 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=[10,8])\n",
    "sns.heatmap(train_data.iloc[:10000, 1:21].corr())"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [],
   "source": [
    "### 特征重要性分析\n",
    "feature_importance             = pd.DataFrame()\n",
    "feature_importance['fea_name'] = train_features\n",
    "feature_importance['fea_imp']  = clf.feature_importance()\n",
    "feature_importance             = feature_importance.sort_values('fea_imp',ascending = False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>fea_name</th>\n",
       "      <th>fea_imp</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>0</td>\n",
       "      <td>file_id_api_count</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>14</td>\n",
       "      <td>api_pivot_CertControlStore_x</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>3</td>\n",
       "      <td>file_id_tid_nunique</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>4</td>\n",
       "      <td>file_id_index_count</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>5</td>\n",
       "      <td>file_id_index_nunique</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>473</td>\n",
       "      <td>api_pivot_select_y</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>474</td>\n",
       "      <td>api_pivot_send_y</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>475</td>\n",
       "      <td>api_pivot_setsockopt_y</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>476</td>\n",
       "      <td>api_pivot_socket_y</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>477</td>\n",
       "      <td>api_pivot_timeGetTime_y</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>478 rows × 2 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                         fea_name  fea_imp\n",
       "0               file_id_api_count        0\n",
       "14   api_pivot_CertControlStore_x        0\n",
       "3             file_id_tid_nunique        0\n",
       "4             file_id_index_count        0\n",
       "5           file_id_index_nunique        0\n",
       "..                            ...      ...\n",
       "473            api_pivot_select_y        0\n",
       "474              api_pivot_send_y        0\n",
       "475        api_pivot_setsockopt_y        0\n",
       "476            api_pivot_socket_y        0\n",
       "477       api_pivot_timeGetTime_y        0\n",
       "\n",
       "[478 rows x 2 columns]"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "feature_importance.sort_values('fea_imp',ascending = False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x1342e8ffa08>"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "<Figure size 1440x720 with 0 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1440x720 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=[20, 10,])\n",
    "plt.figure(figsize=[20, 10,])\n",
    "sns.barplot(x = feature_importance.iloc[:10]['fea_name'], y = feature_importance.iloc[:10]['fea_imp'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x1342f021088>"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1440x720 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=[20, 10,])\n",
    "sns.barplot(x = feature_importance['fea_name'], y = feature_importance['fea_imp'])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 5.3.5 模型测试"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "pred_res = 0\n",
    "flod = 5\n",
    "for model in models:\n",
    "    pred_res += model.predict(test_submit[train_features]) * 1.0 / flod\n",
    "\n",
    "test_submit['prob0'] = 0\n",
    "test_submit['prob1'] = 0\n",
    "test_submit['prob2'] = 0\n",
    "test_submit['prob3'] = 0\n",
    "test_submit['prob4'] = 0\n",
    "test_submit['prob5'] = 0\n",
    "test_submit['prob6'] = 0\n",
    "test_submit['prob7'] = 0\n",
    "\n",
    "test_submit[['prob0','prob1','prob2','prob3','prob4','prob5','prob6','prob7']] = pred_res\n",
    "test_submit[['file_id','prob0','prob1','prob2','prob3','prob4','prob5','prob6','prob7']].to_csv('baseline2.csv',index = None)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "scrolled": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.1"
  },
  "toc": {
   "nav_menu": {},
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": false,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": true,
   "toc_position": {},
   "toc_section_display": true,
   "toc_window_display": true
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
